A common problem encountered by many internet users is re-buffering pauses during video streams. This phenomenon is in particular frequent when the actual end-users internet connection capacity/throughput is very close to that of the stream quality being consumed, or when the video source is remote from the end user and requires intersecting over multiple networks examples are:                Shared Wi-Fi connections        3G Mobile networks.        Crowded High speed links (Cable)        Low quality (high packet loss) links in developing countries        Local ISP connection is stronger than outboard ISP connection and can't be fully utilized (example: end-user has 5 Mbps ADSL line, but is actually downloading at 2 Mbps speed).        Poor routing, but Server and Client connectivity is actually strong.        
Many attempts have been made to reduce buffering by adjusting the streaming protocol congestion control mechanism, adjusting compression rate or changing the stream bitrate dynamically with the changing condition of the link (e.g. Adobe Http Dynamic Streaming).
Using several streams for downloading a file has been previously proposed. However such attempts concentrated either on downloading a whole file or streaming a media file while considering its playing bitrate for calculating fragment download (see U.S. Pat. No. 8,224,981 and references therein).
Adaptive streaming protocols such as Apples' HLS, Adobe HDS, Microsoft Smooth Streaming or MPEG-DASH use several versions of the same file (usually with different quality levels) to adapt to the changing link bandwidth. In order to enable smooth transition between the various quality levels the files are usually fragmented into chunks. The player receives a manifest file describing the list of fragments (and how to retrieve them i.e. URLs/URL pattern) for any particular quality (resolution) level. The typical player then starts downloading the fragments serially while measuring the performance/bandwidth and decides upon changing quality level accordingly.